`:top
An `!interface description language`! or `!interface definition language`! (`!IDL`!) is a generic term for a language that lets a program or object written in one language communicate with another program written in an unknown language. IDLs are usually used to describe `F33f`_`[data types`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Data_type]`_`f and interfaces in a `F33f`_`[language-independent`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Language-independent_specification]`_`f way, for example, between those written in `F33f`_`[C++`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=C++]`_`f and those written in `F33f`_`[Java`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_(programming_language)]`_`f.
IDLs are commonly used in `F33f`_`[remote procedure call`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Remote_procedure_call]`_`f software. In these cases the machines at either end of the `*link`* may be using different `F33f`_`[operating systems`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Operating_system]`_`f and computer languages. IDLs offer a bridge between the two different systems.
Software systems based on IDLs include `F33f`_`[Sun's`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Sun_Microsystems]`_`f `F33f`_`[ONC RPC`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ONC_RPC]`_`f, `F33f`_`[The Open Group`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=The_Open_Group]`_`f's `F33f`_`[Distributed Computing Environment`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Distributed_Computing_Environment]`_`f, `F33f`_`[IBM`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=IBM]`_`f's `F33f`_`[System Object Model`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=System_Object_Model]`_`f, the `F33f`_`[Object Management Group`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Object_Management_Group]`_`f's `F33f`_`[CORBA`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=CORBA]`_`f (which implements OMG IDL, an IDL based on DCE/RPC) and `F33f`_`[Data Distribution Service`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Data_Distribution_Service]`_`f, `F33f`_`[Mozilla`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Mozilla]`_`f's `F33f`_`[XPCOM`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=XPCOM]`_`f, `F33f`_`[Microsoft`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Microsoft]`_`f's `F33f`_`[Microsoft RPC`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Microsoft_RPC]`_`f (which evolved into `F33f`_`[COM`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Component_Object_Model]`_`f and `F33f`_`[DCOM`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Distributed_Component_Object_Model]`_`f), `F33f`_`[Facebook`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Facebook]`_`f's `F33f`_`[Thrift`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Apache_Thrift]`_`f and `F33f`_`[WSDL`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Web_Services_Description_Language]`_`f for Web services.
>>Contents
• `F0af`_`[Examples`#examples]`_`f
• `F0af`_`[See also`#see-also]`_`f
• `F0af`_`[References`#references]`_`f
• `F0af`_`[External links`#external-links]`_`f
-─
>>Examples
• AIDL: `F33f`_`[Java`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_(programming_language)]`_`f-based, for `F33f`_`[Android`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Android_(operating_system)]`_`f; supports local and remote procedure calls, can be accessed from native applications by calling through `F33f`_`[Java Native Interface`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_Native_Interface]`_`f (JNI)
• `F33f`_`[Apache Thrift`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Apache_Thrift]`_`f: from `F33f`_`[Apache`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Apache_Software_Foundation]`_`f, originally developed by `F33f`_`[Facebook`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Facebook]`_`f
• `F33f`_`[Avro IDL`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Apache_Avro]`_`f: for the Apache Avro system
• `F33f`_`[ASN.1`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ASN.1]`_`f
• `F33f`_`[Cap'n Proto`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Cap'n_Proto]`_`f: created by its former maintainer, avoids some of the perceived shortcomings of `F33f`_`[Protocol Buffers`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Protocol_Buffers]`_`f.
• Concise Data Definition Language (CDDL, RFC 8610):`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f] A Notation for `F33f`_`[CBOR`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=CBOR]`_`f and `F33f`_`[JSON`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=JSON]`_`f data structures
• CortoScript: Describe data and/or interfaces for systems that require `F33f`_`[Semantic interoperability`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Semantic_interoperability]`_`f
• `F33f`_`[Etch`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Etch_(protocol)]`_`f: Cisco's Etch Cross-platform Service Description Language
• `F33f`_`[Extensible Data Notation`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Extensible_Data_Notation]`_`f (EDN): `F33f`_`[Clojure`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Clojure]`_`f data format, similar to JSON
• `F33f`_`[FlatBuffers`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=FlatBuffers]`_`f: Serialization format from `F33f`_`[Google`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Google]`_`f supporting zero-copy deserialization
• `F33f`_`[Franca IDL`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Franca_IDL]`_`f: the open-source Franca interface definition language
• FIDL: Interface description language for the `F33f`_`[Fuchsia Operating System`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Fuchsia_(operating_system)]`_`f designed for writing app components in `F33f`_`[C`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=C_(programming_language)]`_`f, `F33f`_`[C++`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=C++]`_`f, `F33f`_`[Dart`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Dart_(programming_language)]`_`f, `F33f`_`[Go`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Go_(programming_language)]`_`f and `F33f`_`[Rust`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Rust_(programming_language)]`_`f.`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f]
• `F33f`_`[IDL specification language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=IDL_specification_language]`_`f: the original Interface Description Language
• IPL: Imandra Protocol Language
• `F33f`_`[JSON`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=JSON]`_`f Web-Service Protocol (`F33f`_`[JSON-WSP`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=JSON-WSP]`_`f)
• `F33f`_`[Lightweight Imaging Device Interface Language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Lightweight_Imaging_Device_Interface_Language]`_`f
• `F33f`_`[Microsoft Interface Definition Language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Microsoft_Interface_Definition_Language]`_`f (MIDL): the Microsoft extension of OMG IDL to add support for `F33f`_`[Component Object Model`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Component_Object_Model]`_`f (COM) and `F33f`_`[Distributed Component Object Model`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Distributed_Component_Object_Model]`_`f (DCOM)
• `F33f`_`[OMG IDL`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=OMG_IDL]`_`f: standardized by `F33f`_`[Object Management Group`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Object_Management_Group]`_`f, used in `F33f`_`[CORBA`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=CORBA]`_`f (for DCE/RPC services) and `F33f`_`[DDS`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Data_Distribution_Service]`_`f (for `F33f`_`[data modeling`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Data_modeling]`_`f), also selected by the W3C for exposing the DOM of XML, HTML, and CSS documents
• `F33f`_`[OpenAPI Specification`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=OpenAPI_Specification]`_`f: a standard for `F33f`_`[Web APIs`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Web_API]`_`f, used by `F33f`_`[Swagger`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Swagger_(software)]`_`f and other technologies.
• `F33f`_`[Open Service Interface Definitions`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Open_Service_Interface_Definitions]`_`f
• `F33f`_`[Protocol Buffers`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Protocol_Buffers]`_`f: `F33f`_`[Google`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Google]`_`f's IDL
• `F33f`_`[RESTful Service Description Language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=RESTful_Service_Description_Language]`_`f (RSDL)
• Smithy: An AWS-invented protocol-agnostic interface definition language.
• Specification Language for `F33f`_`[Internet Communications Engine`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Internet_Communications_Engine]`_`f (Ice: `F33f`_`[Slice`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Internet_Communications_Engine]`_`f)
• `F33f`_`[Universal Network Objects`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Universal_Network_Objects]`_`f: `F33f`_`[OpenOffice.org`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=OpenOffice.org]`_`f's component model
• `F33f`_`[Web Application Description Language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Web_Application_Description_Language]`_`f (WADL)
• `F33f`_`[Web IDL`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Web_IDL]`_`f by `F33f`_`[WHATWG`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=WHATWG]`_`f: can be used to describe interfaces that are intended to be implemented in web browsers
• `F33f`_`[Web Services Description Language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Web_Services_Description_Language]`_`f (WSDL)
• `F33f`_`[XCB`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=XCB]`_`f: X protocol description language for `F33f`_`[X Window System`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=X_Window_System]`_`f
• Cross Platform Interface Description Language (`F33f`_`[XPIDL`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=XPIDL]`_`f): Mozilla's way to specify XPCOM interfaces
>>See also
• `F33f`_`[Component-based software engineering`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Component-based_software_engineering]`_`f
• `F33f`_`[Interface-based programming`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Interface-based_programming]`_`f
• `F33f`_`[Java Interface Definition Language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Java_Interface_Definition_Language]`_`f
• `F33f`_`[List of computing and IT abbreviations`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=List_of_computing_and_IT_abbreviations]`_`f
• `F33f`_`[Universal Interface Language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Universal_Interface_Language]`_`f
• `F33f`_`[User interface markup language`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=User_interface_markup_language]`_`f
>>References
`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f `:citerefbirkholzviganobormann2019`aBirkholz, H.; Vigano, C.; Bormann, C. (2019). "Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures". `*RFC Editor`*. `F33f`_`[doi`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Doi_(identifier)]`_`f:10.17487/RFC8610. `F33f`_`[S2CID`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=S2CID_(identifier)]`_`f 195857027. Retrieved 2022-05-24.
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f "FIDL Overview". `*Fuchsia`*. Retrieved 2022-02-23.
>>External links
• Documenting Software Architecture: Documenting Interfaces (PDF)
• OMG Specification of OMG IDL
• OMG Tutorial on OMG IDL
`c`F0af`_`[↑ Back to top`#top]`_`f`a